//
// 本驱动适用于OLED12864屏（0.96寸）
// OLED分辨率为128*64

#ifndef oled_h
#define oled_h

#include "device_conf.h"

// OLED端口定义
#ifdef STM32F10X
#include "stm32f10x.h"

#define OLED_RCC_APBx                   RCC_APB2Periph_GPIOB	//定义OLED端口时钟总线
#define OLED_RCC_APBx_CMD(APBx, state)  RCC_APB2PeriphClockCmd(APBx, state)
#define OLED_GPIOx				        GPIOB
#define OLED_SCL_GPIO_Pin		        GPIO_Pin_12
#define OLED_SDA_CPIO_Pin		        GPIO_Pin_13
#define OLED_RES_GPIO_Pin		        GPIO_Pin_14
#define OLED_DC_GPIO_Pin		        GPIO_Pin_15

// OLED的时钟引脚(SCL)
#define OLED_SCL_L()    GPIO_ResetBits(OLED_GPIOx, OLED_SCL_GPIO_Pin)
#define OLED_SCL_H()    GPIO_SetBits(OLED_GPIOx, OLED_SCL_GPIO_Pin)
// OLED的数据引脚(SDA)
#define OLED_SDA_L()    GPIO_ResetBits(OLED_GPIOx, OLED_SDA_CPIO_Pin)
#define OLED_SDA_H()    GPIO_SetBits(OLED_GPIOx, OLED_SDA_CPIO_Pin)
// OLED的复位引脚(RES)
#define OLED_RST_L()    GPIO_ResetBits(OLED_GPIOx, OLED_RES_GPIO_Pin)
#define OLED_RST_H()    GPIO_SetBits(OLED_GPIOx, OLED_RES_GPIO_Pin)
// OLED的数据/命令控制引脚(DC)
#define OLED_DC_L()     GPIO_ResetBits(OLED_GPIOx, OLED_DC_GPIO_Pin)
#define OLED_DC_H()     GPIO_SetBits(OLED_GPIOx, OLED_DC_GPIO_Pin)

#endif

// 模式
#define OLED_CMD  0	// 写命令
#define OLED_DATA 1	// 写数据

//函数声明
void OledCls(void);//清屏函数
void OledInit(void);//OLED初始化
void OledShow6x8Char(uint8 x, uint8 y, char ch);//显示一个6x8标准ASCII字符
void OledShow6x8Str(uint8 x, uint8 y, char *ch);//写入一组6x8标准ASCII字符串
void OledPrintValueI(uint8 x, uint8 y, int32 data);//将一个整型数转换成5位数进行显示	
void OledPrintValueF(uint8 x, uint8 y, float data, uint8 num);//将一个float型数转换成5位数带小数和符号的数据进行显示
void OledPrintImage(uint8 *pucTable, uint32 usRowNum, uint32 usColumnNum);//显示图像
void OledDrawBMP(uint8 x0, uint8 y0, uint8 x1, uint8 y1, uint8 BMP[]); //显示BMP图片
    
#endif
